Method for Predicting Acid Placement in Carbonate Reservoirs

ABSTRACT

A computationally efficient general method of modeling or simulating matrix acidizing treatment when flow is not axisymmetric involves determining streamlines in the general flow field using complex potential theory to solve for the flow along the streamlines. The flow over a time step is used to model the propagation of the acid front and the creation and extension of wormholes.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation-in-part of U.S. patent application Ser. No. 11/456,778, “Flow of Self-Diverting Acids in Carbonate Reservoirs”, filed on Jul. 11, 2006. The disclosure of the above application is incorporated herein by reference.

FIELD OF THE INVENTION

The invention relates to acid stimulation of hydrocarbon bearing subsurface formations and reservoirs. In particular, the invention relates to methods of optimizing field treatment of the formations.

BACKGROUND

Matrix acidizing is a process used to increase the production rate of wells in hydrocarbon reservoirs. It includes the step of pumping an acid into an oil- or gas-producing well to increase the permeability of the formation through which hydrocarbon is produced and to remove some of the formation damage caused by the drilling and completion fluids and drill bits during the drilling and completion process.

The procedural techniques for pumping stimulation fluids down a wellbore to acidize a subterranean formation are well known. The person who designs such matrix acidizing treatments has available many useful tools to help design and implement the treatments, one of which is a computer program commonly referred to as an acid placement simulation model (a.k.a., matrix acidizing simulator, wormhole model). Most if not all commercial service companies that provide matrix acidizing services to the oilfield have one or more simulation models that their treatment designers use. One commercial matrix acidizing simulation model that is widely used by several service companies is known as StimCADE™. This commercial computer program is a matrix acidizing design, prediction, and treatment-monitoring program that was designed by Schlumberger Technology Corporation. All of the various simulation models use information available to the treatment designer concerning the formation to be treated and the various treatment fluids (and additives) in the calculations, and the program output is a pumping schedule that is used to pump the stimulation fluids into the wellbore. The text “Reservoir Stimulation,” Third Edition, Edited by Michael J. Economides and Kenneth G. Nolte, Published by John Wiley & Sons, (2000), is an excellent reference book for matrix acidizing and other well treatments.

Various mathematical models have been proposed in order to represent the flow of acid within the carbonate formations around the wellbore and the subsequent dissolution of the rock matrix where acid has invaded. Then, according to the prediction of these models, engineers can estimate how much the well will produce after treatment and, therefore, estimate whether a given treatment design will lead to the targeted production increase and optimize the design accordingly. The models proposed in the literature are developed to represent acid flow in radial flow, i.e. axisymmetric, conditions as could be observed in some particular conditions. But axisymmetric flow conditions are not always present. It would be a major advance to provide

-   -   a criterion to determine under which radial flow, i.e.         axisymmetric flow, is relevant,     -   a method to solve acid flow when acid flow around the wellbore         is not axisymmetric.

SUMMARY

A computationally efficient general method of modeling or simulating matrix acidizing treatment when flow is not axisymmetric involves determining streamlines in the general flow field using complex potential theory to solve for the flow along the streamlines. The flow over a time step is used to model the propagation of the acid front and the creation and extension of wormholes.

For self diverting acids, the flow along the streamlines is solved with the use of flow parameters Θ_(r) and Δp_(r) derived from core flood experiments.

Methods of optimizing matrix acidizing treatment involve doing the calculations in an optimization loop based on user input of operational parameters and parameters associated with the geological formation and acidizing fluid.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a typical experimental apparatus for acid injection into a rock core;

FIG. 2 illustrates the pressure-drop evolution for non-diverting acid systems such as HCl. 2A: schematic, 2B: actual data;

FIG. 3 illustrates the pressure drop evolution for self-diverting acid systems such as VDA™. 3A: schematic, 3B: example of actual data;

FIG. 4 shows a multi pressure tap/transducer core-flooding apparatus;

FIG. 5 shows the evolution of the effective viscosity μ_(e) with the number of pore volumes injected for a self-diverting acid;

FIG. 6 illustrates a flow pattern in the core when a self diverting acid is pumped;

FIGS. 7 a and 7 b illustrate axisymmetric flow around a wellbore;

FIG. 8 shows a wellbore trajectory in a bedding plane;

FIG. 9 is an example of a well segmentation and reservoir layering according to criterion (24). Horizontal flow in the upper part of the reservoir and vertical confined flow in the lower part of the reservoir;

FIG. 10 is an example of workflow for solving flow around a wellbore segment in the corresponding reservoir layer;

FIG. 11 is a flow domain in a layer perpendicular to the bedding plane;

FIG. 12 is a flow domain after resealing;

FIG. 13 shows a set of source points along the wellbore contour of the invention of disclosure;

FIG. 14 a shows a set of streamlines [140] computed with a permeability ratio k_(h)/k_(v)=5. The wellbore is located at 1.4 m from the top (y=0) impermeable barrier [142]. Another impermeable barrier [143] is located at the bottom y=h=31.8 m. FIG. 14 b is a zoom of FIG. 14 a around the wellbore;

FIG. 15 a shows a set of streamlines [150] computed with a permeability ratio k_(h)/k_(v)=5. The wellbore [151] is located at 15.75 m from the top (y=0) impermeable barrier [152]. Another impermeable barrier [153] is located at the bottom y=h=31.8 m. FIG. 15 b is a zoom of FIG. 15 a around the wellbore;

FIG. 16 shows a streamline with velocity and pressure gradient at a point (x,y);

FIGS. 17 a and 17 b are graphs showing a control volume [170] around a point s _(k,i) on the streamline St_(k) for finite volume calculations;

FIG. 18 illustrates updating of the streamlines after each time step. [181]: extent of the wormholed zone after first time step. [182]: extent of the wormholed zone after second time step;

FIG. 19 shows a treatment design methodology in the field;

FIG. 20 shows a wellbore penetrating two (bottom and top) reservoir zones; and

FIG. 21 shows a depth of invasion of the wormhole for 4 different injected volumes: 21 a: 25 gal/ft; 21 b: 50 gal/ft; 21 c: 75 gal/ft; 21 d: 100 gal/ft.

FIGS. 22 and 23 show streamlines calculated for flow around a wellbore.

DESCRIPTION

In order to predict the outcome of the pumping of an acid, or of acid stages, into a reservoir, engineers go through a design process, which can be divided into several steps. In the first step, different acids are injected, for testing, into cylindrical rock cores, under various conditions. FIG. 1 is an illustration of a typical experimental setup used for injecting acid into a core. A pump [2] pumps a fluid, for example an acid, through an accumulator [4] into a core [6] held in a core holder [8]. During such tests, the following parameters will normally be varied:

-   -   Injection rate: Q     -   Temperature: T     -   Acid formulation: Ac     -   Rock type: Ro

As acid flows into the rock, it dissolves part of the rock matrix and increases the overall permeability of the core with time. Depending on the combination of the above parameters, the dissolution pattern inside the rock can vary between face dissolution (also known as compact dissolution), wormholing dissolution, and uniform dissolution. These three dissolution regimes give rise to different acid efficiencies. Acid efficiency is measured as the amount of acid that is required by the rock core to increase its permeability to a pre-set value k_(w), for instance 100 times larger than the initial permeability k₀ of the sample. The smaller this volume of acid is, the higher the efficiency is. The moment at which this target value of permeability increase is reached is called the breakthrough time, t₀. The corresponding volume of acid is called the breakthrough volume, Vol₀.

The measure of pore volumes to breakthrough, denoted Θ₀, (i.e. the breakthrough volume divided by the pore volumes of the core PV (the volume of fluid that can be contained in the core), and its use to predict acid performance during a treatment job has been known to the industry for a long time. If we define Vol as being the geometrical volume of the core and φ₀ the initial porosity of the core (i.e. the fraction of the core volume that can be occupied by a fluid through the pore space network), these parameters are linked to each other as follows:

$\begin{matrix} {\Theta_{0} = {\frac{{Vol}_{0}}{PV} = {{\frac{{Qt}_{0}}{PV}\mspace{14mu} {where}\mspace{14mu} {PV}} = {\varphi_{0} \times {Vol}}}}} & (1) \end{matrix}$

Pore volume to breakthrough has widely been used as a measure of the velocity at which wormholes propagate into the formation, under various conditions such as mean flow-rate Q, temperature T, rock-type Ro, and acid formulation Ac.

In one embodiment, a method for solving the flow of acid from a wellbore segment to a corresponding reservoir layer during a matrix acidizing simulation, comprising:

-   -   (a) Defining the initial geometry of the domain in which the         flow problem is to be solved;     -   (b) Determining the complex potential associated with the flow         problem in the domain under consideration;     -   (c) Determining streamlines from the complex potential in the         domain under consideration;     -   (d) Using the streamlines to solve flow over a time step δt to         propagate acid within the domain and update wormhole extent;     -   (e) Updating the definition of the domain according to wormhole         extent;     -   (f) Updating the time; and     -   (g) Iterating as desired from step b).

In another embodiment, a method of optimizing acid treatment of a hydrocarbon containing carbonate reservoir includes

-   -   carrying out linear core flood experiments varying one or more         parameters selected form the group consisting of acid         formulation, rock type, flow rate, and temperature;     -   deriving the following functions from the experiments, as a         function of the parameters:         -   Θ_(o)—the pore volume to wormhole/dissolution front             breakthrough; and, if the acid formulation is a             self-diverting acid:             -   Θ_(r)—the pore volume to resistance zone breakthrough;                 and             -   Δp_(r)—the pressure drop at resistance zone                 breakthrough;     -   solving the flow of acid from a wellbore segment to a         corresponding reservoir layer during a matrix acidizing         simulation by a process comprising:         -   defining the initial geometry of the domain in which the             flow problem is to be solved;         -   determining the complex potential associated with the flow             problem in the domain under consideration;         -   determining streamlines from the complex potential in the             domain under consideration;         -   using the streamlines to solve flow over a time step δt to             propagate acid within the domain and update wormhole extent;     -   using the simulator in an optimization loop together with known         and/or estimated reservoir parameters; and     -   calculating at least one of the following from the simulator         optimization loop:         -   stage and rate volumes of the acid treatment;         -   fluid selection for the acid treatment;         -   wormhole invasion profile; and         -   skin profile.             The simulator is used to model matrix acidizing in the             geologic formations of interest. Based on the calculations,             treatment conditions can be selected for use in the field to             enhance production of oil or gas from the geologic             formation.

Typically, multiple pressure taps are installed down the length of the core holder; FIG. 1 shows an inlet pressure tap [10], that has an inlet pressure p_(i), and a second pressure tap [12], that has a pressure away from the inlet p_(L), at a distance [14], denoted L, from the inlet. The cross sectional area of the core, A, for example at the core face, is shown at [16]. In order to measure pore-volume to breakthrough for a non-self diverting acid, acid is pumped at a constant rate Q and the pressure drop Δp across the core is monitored. The initial pressure drop when the acid reaches the inlet core face is called Δp₀. Then, as acid flows into the core, the pressure drop declines mostly linearly as illustrated in FIG. 2A, in which the breakthrough time, t_(o), is shown at [18], and in FIG. 2B in which the pore-volume to breakthrough, Θ₀, is shown at [20]. When Δp is virtually equal to 0 (i.e., the core permeability has reached a value k_(w) orders of magnitude larger than the initial permeability k₀) the pore-volume injected is recorded as the pore-volume to breakthrough Θ₀.

More recently, new acid systems, also known as self-diverting acids such as Viscoelastic Diverting Acid (VDA™), have been used to improve the performance of more classical acid systems such as HCl or organic acids. When such systems are pumped using the same procedure as the one described above, very different Δp behavior can be observed, as is illustrated in FIG. 3. FIG. 3 a illustrates the development of Δp with time of pumping (or equivalently, with volume pumped) at a constant rate for two arbitrary systems designated A and B. Results with one self-diverting acid 1, in rock R₁, at temperature T₁, and rate Q₁, are shown by the solid line; results with another self-diverting acid 2, in rock R₂, at temperature T₂, and rate Q₂, are shown by the dotted line.

One important difference is that Δp may increase and then decrease with time or decrease in two regimes at different rates. In particular, it is observed that Δp has a piece-wise linear evolution. First, Δp evolves according to a first linear relationship with time (or equivalently with volume or pore volume injected) in the regions marked as A1 and A2 for two illustrative fluids. Then, at a certain time t_(r), (or volume Vol_(r)) it switches to a second linear behavior, as depicted by B1 and B2 in FIG. 3 a. Associated with this behavior, we define two new parameters Δp_(r) (see FIG. 3 a) and the number of pore-volumes to reach Δp_(r), denoted Θ_(r). Δp_(r) is defined as the value of Δp when Δp switches from the first to the second linear trend at time t_(r). The parameter Θ_(r) is given by:

$\begin{matrix} {\Theta_{r} = {\frac{{Vol}_{r}}{PV} = \frac{{Qt}_{r}}{PV}}} & (2) \end{matrix}$

where PV is the pore volume of the core, measured by known methods to determine the volume of liquid held in the core at saturation.

These two parameters constitute a means of predicting the performance of self-diverting acids when used in mathematical models and algorithms as will be explained below. Real data are shown in FIG. 3 b.

Additional experiments have shown that the pressure drop evolution described in FIG. 3, and obtained for self-diverting acid, is due to the existence of a region of low fluid mobility propagating ahead of the wormholes, or ahead of the dissolutions fronts in general. For illustration, a setup as in FIG. 1 is fitted with multiple pressure taps and transducers to measure the pressure along the core during the acid injection experiments, local pressure drops Δp_(e) along the core can be measured. Such a new experimental setup is represented in FIG. 4, in which the inlet pressure tap and transducer is shown at [22] and additional pressure taps and transducers at distances down the core holder are shown at [24].

For a given pair of successive transducers (taps), L_(e) is the distance between the two taps, k_(e) is the permeability of the core and μ_(e) is the fluid viscosity between the two taps. According to Darcy's law regarding fluid flow, the measured parameters are interrelated:

$\begin{matrix} {Q = {\frac{{Ak}_{e}}{\mu_{e}}\frac{\Delta \; p_{e}}{L_{e}}}} & (3) \end{matrix}$

where A is the cross sectional area of the core and Q is the rate of fluid flow. The fluid mobility M_(e) is defined as:

$\begin{matrix} {M_{e} = \frac{k_{e}}{\mu_{e}}} & (4) \end{matrix}$

With the apparatus in FIG. 4, one can:

-   -   measure Δp_(e) for every pair of transducers, against time,     -   and use equations (3) and (4) to determine the fluid mobility         M_(e) between every pair of transducers, against time

From the knowledge of M_(e) at any time, either an effective viscosity or an effective permeability can also be determined:

-   -   assuming the core permeability k₀ is unchanged, equation (4)         gives

$\begin{matrix} {\mu_{e} = \frac{k_{0}}{M_{e}}} & (5) \end{matrix}$

-   -   assuming the acid viscosity μ is known, equation (4) gives:

k _(e) =μM _(e)  (6)

The effective viscosity μ_(e) of the fluid flowing between pairs of transducers can be monitored against time, or equivalently, against the number of pore volumes injected. The results of one example of such monitoring are illustrated in FIG. 5. The five curves labeled 1, 2, 3, 4, and 5 in FIG. 5 are the values of μ_(e) calculated from equations (3), (4), and (5) at the five locations L_(e) in FIG. 4.

Line number 1 (see FIG. 5) corresponds to the zone between the core inlet and the first pressure tap on the core. Line number 2 corresponds to the zone between the first and second pressure taps on the core. The other lines represent the remaining successive pairs in order.

From FIG. 5, it can be seen that, as the self-diverting acid flows into the core, a first zone of finite effective viscosity μ_(e) propagates along the core (observed from the viscosity peaks) followed be a zone of virtually zero effective viscosity, or equivalently (using equation (4)), a zone of very large effective permeability k_(e). The flow pattern in the core when acid is being pumped (from left to right as shown in the figure) can therefore be represented as in FIG. 6.

The zone of high fluid mobility [26] can be parameterized by an effective fluid mobility M_(e)=M_(w) and a propagation velocity V_(w). Equivalently, the zone can also be characterized by an effective fluid viscosity μ_(w) or an effective permeability k_(w), derived according to equation (4).

Similarly, the zone of resistance or low fluid mobility [28] can be parameterized by an effective fluid mobility M_(e)=M_(r) (and therefore according to Equation 4 an effective fluid viscosity μ_(e)=μ_(r) or an effective permeability k_(e)=k_(r)), as well as a propagation velocity V_(r). Finally, there is a zone of displaced fluid [30] that was originally in the core prior to injection.

The velocities can be determined as follows

$\begin{matrix} \left\{ \begin{matrix} {{V_{w}\left( {\left( {Q\text{/}A} \right),T,{Ro},{Ac}} \right)} = {\left( \frac{Q}{A} \right)\frac{1}{\theta_{0}\left( {\left( {Q\text{/}A} \right),T,{Ro},{Ac}} \right)}}} \\ {{V_{r}\left( {\left( {Q\text{/}A} \right),T,{Ro},{Ac}} \right)} = {\left( \frac{Q}{A} \right)\frac{1}{\theta_{r}\left( {\left( {Q\text{/}A} \right),T,{Ro},{Ac}} \right)}}} \end{matrix} \right. & (7) \end{matrix}$

The parentheses indicate that the velocities and pore volumes to breakthrough are themselves functions of fluid velocity Q/A, temperature T, rock formation Ro, and acid formulation Ac. The functions Θ₀ and Θ_(r) are determined experimentally from the core flood experiments.

Using effective viscosities to express the effective mobilities, and rearranging the formulae, the effective viscosity μ_(r) is given by (8), and the derivation of (8) is given below.

$\begin{matrix} {\mu_{r} = {\mu_{d}\frac{\Delta \; p_{r}}{\Delta \; p_{0}}\frac{\Theta_{0}}{\Theta_{0} - \Theta_{r}}}} & (8) \end{matrix}$

Where μ_(d) is the viscosity of the displaced fluid, originally saturating the core before acid is injected; Δp₀ is the value of the pressure drop across the core when only the displaced fluid is pumped at the same conditions (typically brine). (8) is derived as follows. Let L_(w) be the distance traveled by the wormholes, measured from the core inlet, during the core-flood experiment, where the fluid mobility is M_(w) (see FIG. 6). Let L_(r) be the distance traveled by the front of low fluid mobility, where the fluid mobility is M_(r) (see FIG. 6). At the moment when L_(r)=L, L being the length of the core, Δp_(r) is measured and using Darcy's law, we find that,

$\begin{matrix} {{{\Delta \; p_{r}} = {{Q\frac{\mu_{r}}{{Ak}_{0}}\left( {L - L_{w}} \right)} = {Q\frac{\mu_{r}}{{Ak}_{0}}{L\left( {1 - \frac{\Theta_{r}}{\Theta_{0}}} \right)}}}},} & (9) \end{matrix}$

and since, by definition,

$\begin{matrix} {{{\Delta \; p_{0}} = {Q\frac{\mu_{d}}{{Ak}_{0}}L}},} & (10) \end{matrix}$

we then find (8) by simple algebra.

For the zone of high fluid mobility, we find that the effective fluid viscosity μ_(e)=μ_(w) in this region can be expressed as:

$\begin{matrix} {\mu_{w} = {\mu_{d}\frac{\Delta \; p_{bt}}{\Delta \; p_{0}}}} & (11) \end{matrix}$

where Δp_(bt) is the value of Δp when the wormholes have broken through the outlet face of the core (this is the final value of Δp). (11) is derived as follows. When, L_(w)=L, L being the length of the core, Δp_(bt) is measured. Using Darcy's law, we then find that,

$\begin{matrix} {{\Delta \; p_{bt}} = {Q\frac{\mu_{w}}{{Ak}_{0}}L}} & (12) \end{matrix}$

then, using (10) and (12), we find (11) by simple algebra.

Equivalently, (8) and (11) can be used to define an effective mobility or an effective permeability in each zone, using Equation (4). This leads to equation (13).

$\begin{matrix} \left\{ {\begin{matrix} {M_{r} = \frac{k_{0}}{\mu_{d}\frac{\Delta \; p_{r}}{\Delta \; p_{0}}\frac{\Theta_{0}}{\Theta_{0} - \Theta_{r}}}} \\ {M_{w} = \frac{k_{0}}{\mu_{d}\frac{\Delta \; p_{bt}}{\Delta \; p_{0}}}} \end{matrix}\left\{ \begin{matrix} {k_{r} = \frac{k_{0}}{\frac{\mu_{d}}{\mu}\frac{\Delta \; p_{r}}{\Delta \; p_{0}}\frac{\Theta_{0}}{\Theta_{0} - \Theta_{r}}}} \\ {k_{w} = \frac{k_{0}}{\frac{\mu_{d}}{\mu}\frac{\Delta \; p_{bt}}{\Delta \; p_{0}}}} \end{matrix} \right.} \right. & (13) \end{matrix}$

The use of Equations (8) and (11) in the case of axisymmetric radial flow around the wellbore in the reservoir as illustrated in FIGS. 7A and 7B. A wellbore [32] passes through a reservoir [34] and connects first to a wormholed or dissolved zone [36], bounded by a wormhole tip or dissolution front [38], and then to a resistance zone [40], bounded by a resistance zone front [42].

In FIGS. 7A and 7B, q(z,t) is the flow-rate per unit height into the reservoir at a time t, at a distance z along the well-bore. Let r_(w)(z,t) be the radius of the wormhole-tip front or dissolution front and let r_(r)(z,t) be the radius of the front of the resistance zone, both at the same time t and depth z. The evolution with time of both radii is then determined by solving the following set of equations.

$\begin{matrix} \left\{ \begin{matrix} {{\frac{\partial}{\partial t}\left( {r_{w}\left( {z,t} \right)} \right)} = \frac{V_{w}\left( {{V\left( {z,r_{w}} \right)},{T\left( {z,r_{w}} \right)},{{Ro}\left( {z,r_{w}} \right)},{{Ac}\left( {z,r_{w}} \right)}} \right)}{\Phi_{0}\left( {z,r_{w}} \right)}} \\ {{V\left( {z,r_{w}} \right)} = \frac{q\left( {z,t} \right)}{2\pi \; {r_{w}\left( {z,t} \right)}}} \end{matrix} \right. & (14) \\ \left\{ \begin{matrix} {{\frac{\partial}{\partial t}\left( {r_{r}\left( {z,t} \right)} \right)} = \frac{V_{r}\left( {{V\left( {z,r_{r}} \right)},{T\left( {z,r_{r}} \right)},{{Ro}\left( {z,r_{r}} \right)},{{Ac}\left( {z,r_{r}} \right)}} \right)}{\Phi_{0}\left( {z,r_{r}} \right)}} \\ {{V\left( {z,r_{r}} \right)} = \frac{q\left( {z,t} \right)}{2\pi \; {r_{r}\left( {z,t} \right)}}} \end{matrix} \right. & (15) \end{matrix}$

Equations (14) and (15) are integrated by numerical means. Solving (14) and (15) allows the tracking of the wormhole tip and low-mobility front, respectively. In order to compute the pressure profile in the treated zone, i.e. at any z and for r between r_(wb) and r_(r), (r_(wb) is the wellbore radius at the depth z and therefore the pressure in the wellbore during the treatment, we make use of μ_(r) as follows:

$\begin{matrix} \left\{ \begin{matrix} {{{V\left( {z,r,t} \right)} = {\frac{q\left( {z,t} \right)}{2\; \pi \; r} = {{- \frac{k_{e}\left( {z,r,t} \right)}{\mu_{e}\left( {z,r,t} \right)}}\frac{\partial}{\partial r}{p\left( {z,r,t} \right)}}}}} \\ {{{\mu_{e}\left( {z,r,t} \right)} = \left\{ \begin{matrix} \mu & {{{if}\mspace{14mu} {r_{wb}(z)}} < r < {r_{w}\left( {z,t} \right)}} \\ \mu_{r} & {{{if}\mspace{14mu} {r_{w}\left( {z,t} \right)}} < r < {r_{r}\left( {z,t} \right)}} \end{matrix} \right.}} \\ {{{k_{e}\left( {z,r,t} \right)} = \left\{ \begin{matrix} k_{w} & {{{{if}\mspace{14mu} {r_{wb}(z)}} < r < {r_{w}\left( {z,t} \right)}}} \\ k_{0} & {{{{if}\mspace{14mu} {r_{w}\left( {z,t} \right)}} < r}} \end{matrix} \right.}} \end{matrix} \right. & (16) \end{matrix}$

Equations (14)-(16) are integrated by analytical or numerical means and allow calculation of the pressure drop between the wellbore and r_(r), anywhere along the wellbore. The pressure at the wellbore p(z,r_(wb),t) can be determined from the pressure p(z,r_(r),t) at the resistance front using the following formula.

$\begin{matrix} \left\{ \begin{matrix} {{p\left( {z,r_{wb},t} \right)} = {{p\left( {z,r_{w},t} \right)} + {{\ln \left( \frac{r_{w}}{r_{wb}} \right)}\frac{{q\left( {z,t} \right)}\mu}{2\; \pi \; k_{w}}}}} \\ {{p\left( {z,r_{w},t} \right)} = {{p\left( {z,r_{r},t} \right)} + {{\ln \left( \frac{r_{r}}{r_{w}} \right)}\frac{{q\left( {z,t} \right)}\mu_{r}}{2\; \pi \; k_{0}}}}} \end{matrix} \right. & (17) \end{matrix}$

In (16) and (17), it is possible to substitute the effective viscosity μ_(r) and the effective permeability k_(w) with other combinations giving rise to the same fluid mobility, for instance, (16) is equivalent to (18) and (17) to (19).

$\begin{matrix} \left\{ \begin{matrix} {{V\left( {z,r,t} \right)} = {\frac{q\left( {z,t} \right)}{2\; \pi \; r} = {{- {M\left( {z,r,t} \right)}}\frac{\partial}{\partial r}{p\left( {z,r,t} \right)}}}} \\ {{M\left( {z,r,t} \right)} = \left\{ \begin{matrix} M_{w} & {{{if}\mspace{14mu} {r_{wb}(z)}} < r < {r_{w}\left( {z,t} \right)}} \\ M_{r} & {{{if}\mspace{14mu} {r_{w}\left( {z,t} \right)}} < r < {r_{r}\left( {z,t} \right)}} \end{matrix} \right.} \end{matrix} \right. & (18) \\ \left\{ \begin{matrix} {{p\left( {z,r_{wb},t} \right)} = {{p\left( {z,r_{w},t} \right)} + {{\ln \left( \frac{r_{w}}{r_{wb}} \right)}\frac{q\left( {z,t} \right)}{2\; \pi \; M_{w}}}}} \\ {{p\left( {z,r_{w},t} \right)} = {{p\left( {z,r_{r},t} \right)} + {{\ln \left( \frac{r_{r}}{r_{w}} \right)}\frac{q\left( {z,t} \right)}{2\; \pi \; M_{r}}}}} \end{matrix} \right. & (19) \end{matrix}$

For the case of non-axisymmetric flow, whether for a self-diverting acid or a non-self-diverting acid, the following are considered. First criteria are developed to predict when flow is essentially axisymmetric and can thus be approximated accurately with a simple axisymmetric model. Next, a general method of modeling non-axisymmetric flow is provided that is applicable to both kinds of acids.

The velocity field observed during fluid flow in porous media is known to obey Darcy's law:

$\begin{matrix} {\; \left\{ \begin{matrix} {{{\overset{\rightarrow}{V}\left( {t,x,y,z} \right)} = {{- {K\left( {x,y,z} \right)}}\frac{\overset{\rightarrow}{\nabla}{p\left( {t,x,y,z} \right)}}{\mu}}}} \\ {{{K\left( {x,y,z} \right)} = \begin{bmatrix} {k_{xx}\left( {x,y,z} \right)} & {k_{xy}\left( {x,y,z} \right)} & {k_{xz}\left( {x,y,z} \right)} \\ {k_{yx}\left( {x,y,z} \right)} & {k_{yy}\left( {x,y,z} \right)} & {k_{yz}\left( {x,y,z} \right)} \\ {k_{zx}\left( {x,y,z} \right)} & {k_{zy}\left( {x,y,z} \right)} & {k_{zz}\left( {x,y,z} \right)} \end{bmatrix}}} \end{matrix} \right.} & (20) \end{matrix}$

where

{right arrow over (V)} is the Darcy velocity of the fluid in the matrix;

μis the viscosity of fluid saturating the matrix

p is the pressure in the fluid;

K is the permeability tensor

When the x-axis and the y-axis are contained within the bedding plane of the rock formation, and assuming that for a given depth z, the permeability of the rock does not vary within a plane parallel to the bedding plane, the permeability tensor K is often simplified to the following expression.

$\begin{matrix} {{K\left( {x,y,z} \right)} = \begin{bmatrix} {k_{h}(z)} & 0 & 0 \\ 0 & {k_{h}(z)} & 0 \\ 0 & 0 & {k_{v}(z)} \end{bmatrix}} & (21) \end{matrix}$

k_(h) is known as the horizontal permeability

k_(v) is known as the vertical permeability

The horizontal permeability k_(h) and the vertical permeability k_(v) are classical petrochemical properties of a rock formation. They are conventionally measured during core flood experiments or from logs.

From (20) and (21), the velocity vector of the fluid flowing from the wellbore into the rock, at a depth z, will have three components, V_(x), V_(y) and V_(z).

$\begin{matrix} {{V_{x} = {{- \frac{k_{h}}{\mu}}\frac{\partial p}{\partial x}}}{V_{y} = {{- \frac{k_{h}}{\mu}}\frac{\partial p}{\partial y}}}{V_{z} = {{- \frac{k_{v}}{\mu}}\frac{\partial p}{\partial z}}}} & (22) \end{matrix}$

We assume that the wellbore trajectory forms an angle denoted β with the bedding plane at depth z, as illustrated in FIG. 8.

Since the pressure gradient along the wellbore is always small compared to the pressure gradients perpendicular to the wellbore, we find,

$\begin{matrix} \left\{ \begin{matrix} {\begin{matrix} {{v_{h}\left( {r = r_{wb}} \right)} = \sqrt{{V_{x}^{2}\left( {r = r_{wb}} \right)} + {V_{y}^{2}\left( {r = r_{wb}} \right)}}} \\ {= {{{\cos (\alpha)}\frac{k_{h}}{\mu}\frac{\partial p}{\partial r}\left( {r = r_{wb}} \right)}}} \end{matrix}} \\ {\begin{matrix} {{v_{v}\left( {r = r_{wb}} \right)} = {{V_{z}}\left( {r = r_{wb}} \right)}} \\ {{{{\sin (\alpha)}\frac{k_{h}}{\mu}\frac{\partial p}{\partial r}\left( {r = r_{wb}} \right)}}} \end{matrix}} \end{matrix} \right. & (23) \end{matrix}$

where,

α is the angle between the wellbore trajectory and the downwards normal to the bedding plane: α+β=π2

r is the radial distance away from the wellbore center

r_(wb) is the wellbore radius

v_(h) is the modulus of the velocity vector (V_(x),V_(y))

v_(v) is the absolute value of V_(z), the vertical component of velocity vector

According to (23), it is possible to derive a criterion to determine whether the flow will take place mostly in planes parallel to the bedding or in planes perpendicular to the bedding.

$\begin{matrix} \left\{ \begin{matrix} \left. {v_{h} >}\Leftrightarrow{\frac{k_{h}}{k_{v}} > {{\tan (\alpha)}}} \right. \\ \left. {v_{h} <}\Leftrightarrow{\frac{k_{h}}{k_{v}} < {{\tan (\alpha)}}} \right. \end{matrix} \right. & (24) \end{matrix}$

Therefore, knowing k_(h), k_(v) and α, it is possible to determine in which proportions the flow splits between the horizontal direction (i.e. within a plane parallel to the bedding plane) and the vertical one.

-   -   1. If k_(v)=k_(h), at depth z, the flow is contained within a         plane perpendicular to wellbore trajectory, the permeability is         constant within the plane and the flow is axisymmetric within         the plane: radial flow model can be used in such planes;     -   2. If k_(v)≠k_(h) and k_(h)>k_(v) tan(α), the flow is mostly in         the bedding plane intercepting the well trajectory at the         considered depth z, the flow is axisymmetric within the plane         since the permeability is isotropic (k_(x)=k_(y)=k_(h)) and         assumed constant within the plane: radial flow model can be used         in such planes; and     -   3. If k_(v)≠k_(h) and k_(h)<k_(v) tan(α), the flow is mostly in         the plane perpendicular to the bedding planes, intercepting the         well trajectory at the considered depth z and, the flow is not         axisymmetric within this plane: radial flow model cannot be used         in such planes.

In the following, we describe a method to predict the flow around the wellbore when it is not axisymmetric. Examples of conditions giving rise to such flow include:

-   -   1. The flow is not in the bedding plane and at least one of the         following conditions is true:         -   a. k_(v) is not equal to k_(h)         -   b. the flow is confined: limited by an upper flow barrier             and/or a lower flow barrier (such barriers are common             features in geology and usually define the top and bottom of             production zones)     -   2. The flow is in the bedding plane and the flow is confined due         to the presence of a flow barrier in a plane perpendicular to         the bedding plane (such barriers can be associated with         impermeable fractures or faults in geology).

Before solving the flow, the wellbore trajectory is first discretized in multiple segments. For each segment, we defined a layer in the reservoir such that:

-   -   If criterion (24) says that the flow is mostly parallel to the         bedding plane, the layer corresponding to the given segment is a         slice formed by the plane parallel to the bedding plane         intersecting the segment at its top (low value of z) and the         plane parallel to the bedding plane intersecting the segment at         its bottom (large value of z). The flow from the given wellbore         segment into the reservoir will then be contained into the above         slice     -   If criterion (24) says that the flow is mostly perpendicular to         the bedding plane, the layer corresponding to the given segment         is a slice formed by the plane perpendicular to the bedding         plane intersecting the segment at its top (low value of z) and         the plane perpendicular to the bedding plane intersecting the         segment at its bottom (large value of z). The flow from the         given wellbore segment into the reservoir will then be contained         into the above slice. The flow may be constrained by an upper         and/or a lower impermeable flow barrier.

The above segmentation and layering is illustrated in FIG. 9. FIG. 9 a shows a well bore trajectory [90] traversing a series of bedding planes [91] across impermeable barriers [92] and [93]. Flow lines [94] indicate horizontal or vertical flow. FIG. 9 b shows regions of horizontal and vertical flow discretized into horizontal layers [95] and vertical layers [96] corresponding to wellbore segments [97].

The method for solving the flow between a wellbore segment and the corresponding reservoir layer is divided in several steps. In the following, we illustrate the method in condition 1a or 1b.

For a given segment-layer pair:

-   -   a) Define initial geometry of the domain in which the flow         problem is to be solved     -   b) Determine the complex potential associated with the flow         problem in the domain under consideration     -   c) Determine streamlines from the complex potential in the         domain under consideration     -   d) Use streamlines to solve flow over a time step δt and         propagate acid within the domain and update wormhole extent     -   e) Update definition of the domain according to wormhole extent     -   f) Update time     -   g) Go back to point b).

According to criterion (24) and to the above, it is possible to derive a workflow for solving the flow of acid around the wellbore, in the reservoir layer corresponding to the wellbore segment under consideration. This workflow is illustrated in FIG. 10. In this workflow, a flow barrier is defined as any geological feature through which flow cannot occur, and which will change the trajectory of the streamlines when compared to the case where the barrier would have been absent. Such features include:

-   -   Impermeable layers     -   Impermeable faults, fractures and fissures

We assume that these features have an infinite extent in a given layer and, if more than one occurs in a given layer, they are parallel to each other. Step a)—Define Initial Geometry:

In this case, the (x,y) plane is chosen to be perpendicular to the bedding plane and perpendicular to the plane formed by the wellbore trajectory. The problem consists of solving the flow of acid around the wellbore, in the considered reservoir. We assume the existence of an upper and lower flow barrier as described in FIG. 11.

The origin [113] of the y-axis is placed on the upper flow-barrier [111], we note h is the value of y at which the lower flow barrier [112] crosses the y-axis. We note (C(y),y) defines the contour of the wellbore [114] in the (x>0,y) semi-plane.

The initial flow field is determined by solving the following problem, resulting from Darcy's law and assuming incompressible single-phase flow:

$\begin{matrix} {{{\nabla{\cdot \left( {\mu \; \overset{\_}{V}} \right)}} = {{\nabla{\cdot \left( {K{\overset{\rightarrow}{\nabla}p}} \right)}} = {{{k_{x}\frac{\partial^{2}p}{\partial x^{2}}} + {k_{y}\frac{\partial^{2}p}{\partial y^{2}}}} = 0}}}{{\frac{\partial p}{\partial y}\left( {x,0} \right)} = {{\frac{\partial p}{\partial y}\left( {x,h} \right)} = 0}}{{p\left( {{\pm {C(y)}},y} \right)} = p_{wb}}} & (25) \end{matrix}$

p_(wb), is the wellbore pressure in the wellbore segment under consideration, a function of time only in any segment. The x and y variable are rescaled as follows

$\begin{matrix} {{X = x},{Y = {y\sqrt{\frac{k_{x}}{k_{y}}}}}} & (26) \end{matrix}$

Using the new rescaled variables, the problem becomes

$\begin{matrix} \left\{ \begin{matrix} {{\frac{\partial^{2}p}{\partial X^{2}} + \frac{\partial^{2}p}{\partial Y^{2}}} = 0} \\ {{\frac{\partial p}{\partial Y}\left( {X,0} \right)} = {{\frac{\partial p}{\partial Y}\left( {X,{H = {h\sqrt{\frac{k_{x}}{k_{y}}}}}} \right)} = 0}} \\ {{p\left( {{\pm {C\left( {Y\sqrt{\frac{k_{y}}{k_{x}}}} \right)}},Y} \right)} = p_{wb}} \end{matrix} \right. & (27) \end{matrix}$

The domain, in the new rescaled (X,Y) plan, is illustrated in FIG. 12.

Step b)—Determine the Complex Potential:

Problem (27) can be solved using the complex potential theory. We now illustrate one way to determine the complex potential associated to (27).

The complex potential for a source point located, in the complex plane, at ζ_(s)=X_(s)+iY_(s) is:

P(ζ)=ln(ζ−ζ_(s))  (28)

Optionally, equation (28) contains a proportionality constant.

Let S⁺ be a set of source points evenly distributed along the contour C (see FIG. 13).

$\begin{matrix} {S^{+} = {{\left\{ {\zeta_{s\; 1}^{0 +},\ldots \mspace{11mu},\zeta_{sk}^{0 +},\ldots \mspace{11mu},\zeta_{sN}^{0 +}} \right\} \mspace{14mu} {where}\mspace{14mu} \zeta_{sk}^{0 +}} = {{X_{sk}^{0} + {\; Y_{sk}^{0}}} = {{C\left( {Y_{sk}^{0}\sqrt{\frac{k_{y}}{k_{x}}}} \right)} + {\; Y_{sk}^{0}}}}}} & (29) \end{matrix}$

Let S⁻ be the set of points associated with the symmetric of C to the Y-axis:

$\begin{matrix} {S^{-} = {{\left\{ {\zeta_{s\; 1}^{0 -},\ldots \mspace{11mu},\zeta_{sk}^{0 -},\ldots \mspace{11mu},\zeta_{sN}^{0 -}} \right\} \mspace{14mu} {where}\mspace{14mu} \zeta_{sk}^{0 -}} = {{{- X_{sk}^{0}} + {\; Y_{sk}^{0}}} = {{- {C\left( {Y_{sk}^{0}\sqrt{\frac{k_{y}}{k_{x}}}} \right)}} + {\; Y_{sk}^{0}}}}}} & (30) \end{matrix}$

The complex potential Π_(N) ⁰ associated with the set (S⁺ U S⁻) of source points is:

$\begin{matrix} {{\Pi_{N}^{0}(\zeta)} = {\sum\limits_{{k = 1},N}\left\lfloor {{\ln \left( {\zeta - \zeta_{sk}^{0 +}} \right)} + {\ln \left( {\zeta - \zeta_{sk}^{0 -}} \right)}} \right\rfloor}} & (31) \end{matrix}$

The complex potential Π⁰ associated with the union of C and its symmetric acting as a source line is

$\begin{matrix} {{\Pi^{0}(\zeta)} = {\lim\limits_{N\rightarrow\infty}{{\Pi_{N}^{0}(\zeta)}.}}} & (32) \end{matrix}$

At this stage, the domain in which the potential Π⁰ is to be calculated is an unbounded plane (X,Y). In order to introduce the flow barriers located at Y=0 and Y=H, we introduce mirror images of Π⁰ according to the Y=0 and Y=H axis. First, we note {tilde over (Π)}⁰ the complex potential corresponding to the symmetric of C according to the Y=0 axis and build the following source point sets:

$\begin{matrix} {{\overset{\sim}{S}}^{+} = {{\left\{ {{\overset{\sim}{\zeta}}_{s\; 1}^{0 +},\ldots \mspace{11mu},{\overset{\sim}{\zeta}}_{sk}^{0 +},\ldots \mspace{11mu},{\overset{\sim}{\zeta}}_{sN}^{0 +}} \right\} \mspace{14mu} {where}\mspace{14mu} {\overset{\sim}{\zeta}}_{sk}^{0 +}} = {{{\overset{\sim}{X}}_{sk}^{0} - {{\overset{\sim}{Y}}_{sk}^{0}}} = {{C\left( {{\overset{\sim}{Y}}_{sk}^{0}\sqrt{\frac{k_{y}}{k_{s}}}} \right)} - {{\overset{\sim}{Y}}_{sk}^{0}}}}}} & (33) \\ {{\overset{\sim}{S}}^{-} = {{\left\{ {{\overset{\sim}{\zeta}}_{s\; 1}^{0 -},\ldots \mspace{11mu},{\overset{\sim}{\zeta}}_{sk}^{0 -},\ldots \mspace{11mu},{\overset{\sim}{\zeta}}_{sN}^{0 -}} \right\} \mspace{14mu} {where}\mspace{14mu} {\overset{\sim}{\zeta}}_{sk}^{0 -}} = {{{\overset{\sim}{X}}_{sk}^{0} - {{\overset{\sim}{Y}}_{sk}^{0}}} = {{C\left( {{\overset{\sim}{Y}}_{sk}^{0}\sqrt{\frac{k_{y}}{k_{s}}}} \right)} + {{\overset{\sim}{Y}}_{sk}^{0}}}}}} & (34) \end{matrix}$

We find the final complex potential Π:

$\begin{matrix} {{\Pi (\zeta)} = {\sum\limits_{j = {- \infty}}^{+ \infty}\; \left\lbrack {{\Pi^{j}(\zeta)} + {{\overset{\sim}{\Pi}}^{j}(\zeta)}} \right\rbrack}} & (35) \\ {{\Pi^{j}(\zeta)} = {{\lim\limits_{N\rightarrow\infty}{{\Pi_{N}^{j}(\zeta)}\mspace{14mu} {{\overset{\sim}{\Pi}}^{j}(\zeta)}}} = {\lim\limits_{N\rightarrow\infty}{{\overset{\sim}{\Pi}}_{N}^{j}(\zeta)}}}} & (36) \\ {{{\overset{\sim}{\Pi}}_{N}^{j}(\zeta)} = {{\sum\limits_{{k = 1},N}{\left\lbrack {{\ln \left( {\zeta - \zeta_{sk}^{j +}} \right)} + {\ln \left( {\zeta - \zeta_{sk}^{j -}} \right)}} \right\rbrack \mspace{14mu} {{\overset{\sim}{\Pi}}_{N}^{j}(\zeta)}}} = {\sum\limits_{{k = 1},N}\left\lbrack {{\ln \left( {\zeta - {\overset{\sim}{\zeta}}_{sk}^{j +}} \right)} + {\ln \left( {\zeta - {\overset{\sim}{\zeta}}_{sk}^{j -}} \right)}} \right\rbrack}}} & (37) \\ {\zeta_{sk}^{j \pm} = {{{\pm X_{sk}^{j}} + {\; Y_{sk}^{j}}} = {{{\pm {C\left( {Y_{sk}^{0}\sqrt{\frac{k_{y}}{k_{x}}}} \right)}} + {\; Y_{sk}^{j}\mspace{31mu} Y_{sk}^{j}}} = {{2j\; H} + Y_{sk}^{0}}}}} & (38) \\ {{\overset{\sim}{\zeta}}_{sk}^{j \pm} = {{{\pm {\overset{\sim}{X}}_{sk}^{j}} + {\; {\overset{\sim}{Y}}_{sk}^{j}}} = {{{\pm {C\left( {Y_{sk}^{0}\sqrt{\frac{k_{y}}{k_{x}}}} \right)}} + {\; {\overset{\sim}{Y}}_{sk}^{j}\mspace{31mu} {\overset{\sim}{Y}}_{sk}^{j}}} = {{2j\; H} - Y_{sk}^{0}}}}} & (39) \end{matrix}$

By definition, the components V_(X) and V_(Y) of the flow velocity vector {right arrow over (V)} in the (X,Y) plane are:

$\begin{matrix} {{{V_{X}(\zeta)} = {{Re}\left\lbrack {\frac{\partial\Pi}{\partial\zeta}(\zeta)} \right\rbrack}}{{V_{Y}(\zeta)} = {- {{Im}\left\lbrack {\frac{\partial\Pi}{\partial\zeta}(\zeta)} \right\rbrack}}}} & (40) \end{matrix}$

By calculating the complex derivatives of the complex potential Π, one finds:

$\begin{matrix} {{{V_{X}(\zeta)} = {{\sum\limits_{j = {- \infty}}^{+ \infty}\; {V_{X}^{+}(\zeta)}} + {V_{X}^{-}(\zeta)}}}{{V_{X}^{+}(\zeta)} = {\lim\limits_{N\rightarrow\infty}\left\lbrack {\sum\limits_{k = 1}^{N}\; \begin{pmatrix} {\frac{X - X_{sk}^{j}}{\left( {X - X_{sk}^{j}} \right)^{2}\left( {Y - Y_{sk}^{j}} \right)^{2}} +} \\ \frac{X - {\overset{\sim}{X}}_{sk}^{j}}{\left( {X - {\overset{\sim}{X}}_{sk}^{j}} \right)^{2} + \left( {Y - {\overset{\sim}{Y}}_{sk}^{j}} \right)^{2}} \end{pmatrix}} \right\rbrack}}{{V_{X}^{-}(\zeta)} = {\lim\limits_{N\rightarrow\infty}\left\lbrack {\sum\limits_{k = 1}^{N}\; \begin{pmatrix} {\frac{X + X_{sk}^{j}}{\left( {X + X_{sk}^{j}} \right)^{2} + \left( {Y - Y_{sk}^{j}} \right)^{2}} +} \\ \frac{X + {\overset{\sim}{X}}_{sk}^{j}}{\left( {X + {\overset{\sim}{X}}_{sk}^{j}} \right)^{2} + \left( {Y - {\overset{\sim}{Y}}_{sk}^{j}} \right)^{2}} \end{pmatrix}} \right\rbrack}}{and}} & (41) \\ {{{V_{Y}(\zeta)} = {{\sum\limits_{j = {- \infty}}^{+ \infty}\; {V_{Y}^{+}(\zeta)}} + {V_{Y}^{-}(\zeta)}}}{{V_{Y}^{+}(\zeta)} = {\lim\limits_{N\rightarrow\infty}\left\lbrack {\sum\limits_{k = 1}^{N}\; \begin{pmatrix} {\frac{Y - Y_{sk}^{j}}{\left( {X - X_{sk}^{j}} \right)^{2} + \left( {Y - Y_{sk}^{j}} \right)^{2}} +} \\ \frac{Y - {\overset{\sim}{Y}}_{sk}^{j}}{\left( {X - {\overset{\sim}{X}}_{sk}^{j}} \right)^{2} - \left( {Y - {\overset{\sim}{Y}}_{sk}^{j}} \right)^{2}} \end{pmatrix}} \right\rbrack}}{{V_{Y}^{-}(\zeta)} = {\lim\limits_{N\rightarrow\infty}\left\lbrack {\sum\limits_{k = 1}^{N}\; \begin{pmatrix} {\frac{Y - Y_{sk}^{j}}{\left( {X + X_{sk}^{j}} \right)^{2} + \left( {Y - Y_{sk}^{j}} \right)^{2}} +} \\ \frac{Y - {\overset{\sim}{Y}}_{sk}^{j}}{\left( {X + {\overset{\sim}{X}}_{sk}^{j}} \right)^{2} + \left( {Y - {\overset{\sim}{Y}}_{sk}^{j}} \right)^{2}} \end{pmatrix}} \right\rbrack}}} & (42) \end{matrix}$

Step c)—Determine Streamlines from the Complex Potential:

For any pair of coordinates (X,Y), one can compute the velocity vector in the (X,Y) plane using Equations (41) and (42). From the knowledge of the velocity vector at any point, streamlines can be computed solving the streamline equation:

V _(X) δY=V _(Y) δX  (43)

For building the streamlines, one method consists of choosing a small value for a displacement step δ along the streamline. The origin of a given streamline is a point (X,Y) on the wellbore contour. Then there are 2 cases:

-   -   If V_(X) is larger than V_(Y) in absolute value, then we take         δX=δ and, knowing V_(X) and V_(Y) at (X,Y), the displacement         (δX,δY) along the streamline can be computed by calculating δY         from Equation (43), and a new point is determined on the         streamline: (X+δX,Y+δY)     -   If V_(Y) is larger than V_(X) in absolute value, then we take         δY=δ and, knowing V_(X) and V_(Y) at (X,Y), the displacement         (δX,δY) along the streamline can be computed by calculating δX         from Equation (43)), and a new point is determined on the         streamline: (X+δX,Y+δY)

By iterating the above, any streamline originating from a point on the wellbore contour can be drawn. The streamlines in the original (x,y) plane can be obtained from the streamlines in the (X,Y) plane by re-scaling the coordinates using Equation (26). FIGS. 14 and 15 illustrate streamlines computed using the above method. FIG. 14 a shows a set of streamlines [140] computed with a permeability ratio k_(h)/k_(v)=5. The wellbore is located at 1.4 m from the top (y=0) impermeable barrier [142]. Another impermeable barrier [143] is located at the bottom y=h=31.8 m. FIG. 14 b is a zoom of FIG. 14 a around the wellbore. FIG. 15 a shows a set of streamlines [150] computed with a permeability ratio k_(h)/k_(v)=5. The wellbore [151] is located at 15.75 m from the top (y=0) impermeable barrier [152]. Another impermeable barrier [153] is located at the bottom y=h=31.8 m. FIG. 15 b is a zoom of FIG. 15 a around the wellbore.

Step d)—Use Streamlines to Solve Flow

Once the streamlines are computed, acid flow is solved along the streamlines. In the following, we develop a method based on the finite-volume technique to solve flow along streamlines.

The Darcy velocity at any point and time in the (x,y) plane can be obtained from Darcy's law:

$\begin{matrix} \left\{ \begin{matrix} {{\overset{\rightarrow}{V}\left( {x,y} \right)} = {{- {{KM}\left( {x,y} \right)}}{\overset{\rightarrow}{\nabla}{p\left( {x,y} \right)}}}} \\ {K = \begin{pmatrix} k_{x} & 0 \\ 0 & k_{y} \end{pmatrix}} \end{matrix} \right. & (44) \end{matrix}$

M is the fluid mobility. We now develop a finite-volume approach to solve (44). Referring to FIG. 16, consider the streamline [160] passing through point (x,y) and {right arrow over (V)} the Darcy velocity at this point. We note (x′,y′) defines the coordinate system [161] where the x′-axis is in the direction of {right arrow over (V)}, as illustrated in FIG. 16. In this coordinate system, we have the following relationships:

$\begin{matrix} \left\{ \begin{matrix} {\overset{\rightarrow}{V} = {\begin{pmatrix} {\overset{\rightarrow}{V}} \\ 0 \end{pmatrix}_{({x^{\prime},y^{\prime}})} = \begin{pmatrix} \sqrt{u^{2} + v^{2}} \\ 0 \end{pmatrix}_{({x^{\prime},y^{\prime}})}}} \\ {{\overset{\rightarrow}{\nabla}p} = {\begin{pmatrix} \frac{\partial p}{\partial x^{\prime}} \\ \frac{\partial p}{\partial y^{\prime}} \end{pmatrix}_{({x^{\prime},y^{\prime}})} - {\frac{1}{M}\frac{1}{\overset{\rightarrow}{V}}\begin{pmatrix} {\frac{u^{2}}{k_{x}} + \frac{v^{2}}{k_{y}}} \\ {\frac{uv}{k_{x}} - \frac{uv}{k_{y}}} \end{pmatrix}_{({x^{\prime},y^{\prime}})}}}} \end{matrix} \right. & (45) \end{matrix}$

Therefore, the velocity along the streamline [160] can be determined from the knowledge of the pressure gradient along the streamline using the effective permeability along the streamline noted k′:

$\begin{matrix} \left\{ \begin{matrix} {{\overset{\rightarrow}{V}\begin{pmatrix} {\overset{\rightarrow}{V}} \\ 0 \end{pmatrix}}_{({x^{\prime},y^{\prime}})} = \begin{pmatrix} {{- k^{\prime}}M_{({x^{\prime},y^{\prime}})}\frac{\partial p}{\partial x^{\prime}}} \\ 0 \end{pmatrix}_{({x^{\prime},y^{\prime}})}} \\ {k^{\prime} = \frac{1}{\frac{\cos^{2}(\alpha)}{k_{x}} + \frac{\sin^{2}(\alpha)}{k_{y}}}} \end{matrix} \right. & (46) \end{matrix}$

The angle α can be determined when the streamline is computed using Equation (43):

$\begin{matrix} \left\{ {{\begin{matrix} {{\cos (\alpha)} = \frac{\delta \; x}{\sqrt{\left( {\delta \; x} \right)^{2} + \left( {\delta \; y} \right)^{2}}}} \\ {{\sin (\alpha)} = \frac{\delta \; y}{\sqrt{\left( {\delta \; x} \right)^{2} + \left( {\delta \; y} \right)^{2}}}} \end{matrix}\mspace{14mu} {and}\mspace{14mu} \delta \; y} = {{\delta \; Y\sqrt{\frac{k_{x}}{k_{y}}}\mspace{14mu} {and}\mspace{14mu} \delta \; x} = {\delta \; X}}} \right. & (47) \end{matrix}$

One can now compute the flow velocity along the streamline from the component of the pressure gradient along the streamline and from the effective permeability along the streamline using Equation (46). In order to compute the pressure distribution along each streamline, we first consider a set S_(k) of points along the streamline identified by the index k, denoted St_(k), originating from the following point. This set of points will be used to discretize the streamline in order to apply a finite-volume method to solve the flow along them:

$\begin{matrix} {{s_{k,0} = {\left( {x_{sk}^{0},y_{sk}^{0}} \right) = \left( {{C\left( y_{sk}^{0} \right)},y_{sk}^{0}} \right)}}{and}} & (48) \\ {{S_{k} = \left\{ {s_{k,0},s_{k,1},\ldots \mspace{11mu},s_{k,m}} \right\}}{s_{k,i} = \left( {x_{k,i},y_{k,i}} \right)}{\left( {x_{k,0},y_{k,0}} \right) = \left( {x_{sk}^{0},y_{sk}^{0}} \right)}} & (49) \end{matrix}$

Let s be the curvilinear distance along the streamline St_(k) with origin s_(k,0). The points along streamline St_(k) can be identified through their streamline coordinate. The definition of S_(k) in (49) is equivalent to (50):

$\begin{matrix} {{S_{k} = \left\{ {{\overset{\_}{s}}_{k,0},{\overset{\_}{s}}_{k,1},\ldots \mspace{11mu},{\overset{\_}{s}}_{k,m}} \right\}}{{\overset{\_}{s}}_{k,0} = 0}} & (50) \end{matrix}$

For each pair ( s _(k,i), s _(k,i+1)) of point along streamline St_(k), we defined an interface point s _(k,i+1/2) on the streamline such that

s _(k,i+1/2)ε] s _(k,i), s _(k,i+1)[  (51)

For instance, one can choose the mid-distance between s _(k,i) and s _(k,i+1):

$\begin{matrix} {{\overset{\_}{s}}_{k,{i + {1/2}}} = {\frac{1}{2}\left( {{\overset{\_}{s}}_{k,i} + {\overset{\_}{s}}_{k,{i + 1}}} \right)}} & (52) \end{matrix}$

Additionally, we consider the streamlines St_(k+1/2) originating from points denoted

(x _(sk+1/2) ⁰ ,y _(sk+1/2) ⁰)=(C(y _(sk+1/2) ⁰),y _(sk+1/2) ⁰)  (53)

such that

y _(sk+1/2) ⁰ =]y _(sk) ⁰ ,y _(sk+1) ⁰[  (54)

We can now define a control volume [170] (see FIGS. 17 a and 17 b) around a point s _(k,i) on streamline St_(k), as one would do in order to apply the finite-volume technique. We consider the curve E_(k,i+1/2) intersecting St_(k) at s _(k,i+1/2) and intersecting all other possible streamlines located between St_(k−1/2) and St_(k+1/2) at a right-angle in the re-scaled (X,Y) plan. Such lines are known as equipotential curves and can be determined by solving the following equation

V _(Y) δY=−V _(X) δX  (55)

We now consider the connex domain Ω_(k,i) formed by the intersection of St_(k−1/2) and St_(k+1/2) and E_(k,i+1/2) and E_(k,i−1/2). (In a connex set any two points in the set may be connected by a line that is made up of points that are all entirely within the set.) The boundary Γ_(k,i) of this volume is the union of four segments, as illustrated in FIGS. 17 a and 17 b:

Γ_(k,i) =h _(k,i−1/2) ∪h _(k,i+1/2) ∪g _(k−1/2,i) ∪g _(k+1/2,i)  (56)

g_(k−1/2,i) and g_(k+1/2,l) are formed by the segments along St_(k−1/2) and St_(k+1/2) respectively, between E_(k,i+1/2) and E_(k,i−1/2). By the definition of streamlines, no fluid flows across g_(k−1/2,i) and g_(k+1/2,i) and therefore, the volumetric rate Q_(k,i−1/2) per unit thickness along z, across h_(k,i-1/2) equals that across h_(k,i+1/2):

Q _(k,i+1/2) =Q _(k,i−1/2) =Q _(k)  (57)

If the flow occurs in a region where the fluids are compressible then, the mass rate Q^(m) per unit thickness along z, across h_(k,i−1/2) is linked to that across h_(k,i+1/2) as follows:

δt(Q _(k,i−1/2) ^(m)(t)−Q _(k,i+1/2) ^(m)(t))=(m _(k,i)(t+δt)−m _(k,i)(t))  (58)

m_(k,i) is the mass of fluid per unit thickness along z contained in Ω_(k,i).

We now consider 2 cases:

1. The fluid flowing within Ω_(k,i) is incompressible

2. The fluid flowing within Ω_(k,i) is compressible

Case 1: In this case, we have

Q _(k,i+1/2) =Q _(k,i−1/2) =Q _(k)  (57)

By integration of Darcy's law:

$\begin{matrix} {{Q_{k,{i + {1/2}}} = {{- \left( {p_{k,{i + 1}} - p_{k,i}} \right)}T_{k,{i + {1/2}}}}}{T_{k,{i + {1/2}}} = \frac{1}{\int_{{\overset{\_}{s}}_{k,i}}^{{\overset{\_}{s}}_{k,{i + 1}}}{\frac{1}{{\overset{\_}{h}\left( \overset{\_}{s} \right)}{k^{\prime}\left( \overset{\_}{s} \right)}{M\left( \overset{\_}{s} \right)}}\ {\overset{\_}{s}}}}}} & (59) \end{matrix}$

k′ is defined in (46). h( s) is the curvilinear length of the segment along the equipotential intersecting St_(k) at a distance s from s_(k,0) and contained within Ω_(k,i). In the limit of a large number of streamlines, one can estimate h( s) as follows:

$\begin{matrix} {{\overset{\_}{h}\left( \overset{\_}{s} \right)} = {\frac{{\overset{\rightarrow}{V}}(0)}{{\overset{\rightarrow}{V}}\left( \overset{\_}{s} \right)}{\overset{\_}{h}(0)}}} & (60) \end{matrix}$

$\frac{{\overset{\rightarrow}{V}}(0)}{{\overset{\rightarrow}{V}}\left( \overset{\_}{s} \right)}$

can be easily determined from (41) and (42), and h(0) is given by the set S_(k) of the streamline origins:

$\begin{matrix} {{S_{k} = \left\{ {s_{k,0},s_{k,1},\ldots \mspace{11mu},s_{k,m}} \right\}}{s_{k,i} = \left( {x_{k,i},y_{k,i}} \right)}{\left( {x_{k,0},y_{k,0}} \right) = \left( {x_{sk}^{0},y_{sk}^{0}} \right)}} & (49) \end{matrix}$

h(0) can be approximated as follows:

$\begin{matrix} {{{\overset{\_}{h}}_{k}(0)} \approx {\frac{1}{2}\left\lbrack {\sqrt{\left( {x_{{k + 1},0} - x_{k,0}} \right)^{2} + \left( {y_{{k + 1},0} - y_{k,0}} \right)^{2}} + \sqrt{\left( {x_{{k - 1},0} - x_{k,0}} \right)^{2} + \left( {y_{{k - 1},0} - y_{k,0}} \right)^{2}}} \right\rbrack}} & (61) \end{matrix}$

T_(k,i+1/2) may be approximated as follows

$\begin{matrix} {{T_{k,{i + {1/2}}}^{- 1} \approx {\frac{1}{{k^{\prime}\left( {\overset{\_}{s}}_{k,{i + {1/2}}} \right)}{h\left( {\overset{\_}{s}}_{k,{i + {1/2}}} \right)}M_{k,{i + {1/2}}}}\left( {{\overset{\_}{s}}_{k,{i + 1}} - {\overset{\_}{s}}_{k,i}} \right)}}{M_{k,{i + {1/2}}} = \left\{ \begin{matrix} {{{M\left( {\overset{\_}{s}}_{k,i} \right)}\mspace{14mu} {if}\mspace{14mu} \left( {p_{k,{i + 1}} - p_{k,i}} \right)} < 0} \\ {{{M\left( {\overset{\_}{s}}_{k,{i + 1}} \right)}\mspace{14mu} {if}\mspace{14mu} \left( {p_{k,{i + 1}} - p_{k,i}} \right)} > 0} \end{matrix} \right.}} & (62) \end{matrix}$

Case 2: In this case, we have

$\begin{matrix} {{\delta \; {t\left( {{Q_{k,{i - {1/2}}}^{m}(t)} - {Q_{k,{i + {1/2}}}^{m}(t)}} \right)}} = \left( {{m_{k,i}\left( {t + {\delta \; t}} \right)} - {m_{k,i}(t)}} \right)} & (63) \\ {{Q_{k,{i + {1/2}}}^{m} = {{- \left( {p_{k,{i + 1}} - p_{k,i}} \right)}T_{k,{i + {1/2}}}^{m}}}{T_{k,{i + {1/2}}}^{m} = \frac{1}{\int_{{\overset{\_}{s}}_{k,i}}^{{\overset{\_}{s}}_{k,{i + 1}}}{\frac{1}{{\rho \left( {p\left( \overset{\_}{s} \right)} \right)}{\overset{\_}{h}\left( \overset{\_}{s} \right)}{k^{\prime}\left( \overset{\_}{s} \right)}{M\left( \overset{\_}{s} \right)}}\ {\overset{\_}{s}}}}}} & (64) \end{matrix}$

k′ is defined in (46). h( s) is the curvilinear length of the segment along the equipotential intersecting St_(k) at a distance s from s_(k,0) and contained within Ω_(k,i). ρ is the density of the fluid, assumed to be a function of the pressure p.

T_(k,i+1/2) ^(m) may be approximated as follows:

$\begin{matrix} {{\left( T_{k,{i + {1/2}}}^{m} \right)^{- 1} \approx {\frac{1}{{k^{\prime}\left( {\overset{\_}{s}}_{k,{i + {1/2}}} \right)}{h\left( {\overset{\_}{s}}_{k,{i + {1/2}}} \right)}\rho_{k,{i + {1/2}}}M_{k,{i + {1/2}}}}\left( {{\overset{\_}{s}}_{k,{i + 1}} - {\overset{\_}{s}}_{k,i}} \right)}}{M_{k,{i + {1/2}}} = \left\{ {{\begin{matrix} {{{M\left( {\overset{\_}{s}}_{k,i} \right)}\mspace{14mu} {if}\mspace{14mu} \left( {p_{k,{i + 1}} - p_{k,i}} \right)} < 0} \\ {{{M\left( {\overset{\_}{s}}_{k,{i + 1}} \right)}\mspace{14mu} {if}\mspace{14mu} \left( {p_{k,{i + 1}} - p_{k,i}} \right)} > 0} \end{matrix}\rho_{k,{i + {1/2}}}} = \left\{ \begin{matrix} {{{\rho \left( {\overset{\_}{s}}_{k,i} \right)}\mspace{14mu} {if}\mspace{14mu} \left( {p_{k,{i + 1}} - p_{k,i}} \right)} < 0} \\ {{{\rho \left( {\overset{\_}{s}}_{k,{i + 1}} \right)}\mspace{14mu} {if}\mspace{14mu} \left( {p_{k,{i + 1}} - p_{k,i}} \right)} > 0} \end{matrix} \right.} \right.}} & (65) \end{matrix}$

Cases 1 & 2:

The mobility M( s _(k,i)) can be determined by solving mass transport along the streamline St_(k). Mass transport may consist either of the two following approaches:

-   -   1. Mass conservation equation of the different species and         fluids under consideration. These equations allow the         determination of the concentrations and saturations of the         different species and fluids, respectively, at any time along a         given streamline. From the distribution of the concentrations         and saturations, the average fluid mobility can be computed.     -   2. Front tracking of various mobility fronts. As fluids flow         along the streamlines, a range of mobility values propagates         along the streamlines. Between two fronts, each associated with         a different value of the fluid mobility, the fluid mobility is         approximated as being constant.

We illustrate method 2 in the following.

It is common knowledge in the industry that, as acid flows within a carbonate rock, wormholes propagate. It has been found by some authors that the velocity at which wormholes propagate is a function of the flow velocity around the wormhole. Therefore, some authors have proposed the following algorithm to track the tip of the wormholes with time.

$\begin{matrix} {{\frac{\partial{\overset{\rightarrow}{T}}_{w}}{\partial t}(t)} = {\frac{1}{\phi_{0}}\frac{{\overset{\rightarrow}{V}}_{D}\left( {t,x_{w},y_{w}} \right)}{\theta_{0}\left( {{\overset{\rightarrow}{V}}_{D}\left( {t,x_{w},y_{w}} \right)} \right)}}} & (66) \end{matrix}$

{right arrow over (T)}_(w)=(x_(w),y_(w)) is the position vector tracking the front formed by the tip of the wormholes. φ₀ is the initial porosity of the rock. θ₀({right arrow over (V)}_(D)(t,x_(w),y_(w))) is known as the pore-volume to breakthrough and a function of the velocity. The disclosure above describes how θ₀ can be measured from linear core-flood experiments. The inverse of θ₀ is, by definition, the relative velocity at which the tip of the wormholes propagate, i.e. relative to the mean Darcy velocity Q/A.

Two forms of (66) have been proposed in the literature. For linear flow fields, as observed during core-flooding experiments for instance, (66) can be re-written as follows:

$\begin{matrix} {{\frac{\partial x_{w}}{\partial t}\left( {t,x,y} \right)} = {{\frac{1}{\phi_{0}}\frac{u(t)}{\theta_{0}(u)}} = {\frac{1}{\phi_{0}}\frac{Q(t)}{A\; {\theta_{0}\left( \frac{Q}{A} \right)}}}}} & (67) \end{matrix}$

where x_(w) is the distance traveled by the tip of the wormholes in the flow direction (assumed to be the x-axis direction in this case), u is the x-component of the Darcy velocity {right arrow over (V)}_(D), Q the flow-rate and A the cross-section area in the plane orthogonal to the x-axis. For radial flow, some authors have proposed the following:

$\begin{matrix} {{\frac{\partial r_{w}}{\partial t}\left( {t,x,y} \right)} = {{\frac{1}{\phi_{0}}\frac{u_{r}\left( {t,r_{w}} \right)}{\theta_{0}\left( {u_{r}\left( {t,r_{w}} \right)} \right)}} = {\frac{1}{\phi_{0}}\frac{Q(t)}{2{\pi\delta}\; {zr}_{w}{\theta_{0}\left( {u_{r}\left( {t,r_{w}} \right)} \right)}}}}} & (68) \end{matrix}$

where r_(w) is the radial distance traveled by the front formed by the tip of the wormholes and δz is the thickness of the flow domain in the direction orthogonal to the radial plane.

Besides, it is commonly admitted that the mobility of the fluid, upstream of the front tracking the wormhole tips, is constant. In this region, the fluid mobility is high due to an increase of the permeability generated by the wormholes. If we note μ the viscosity of the acid, b_(k) is permeability increase in the wormhole region, then, the fluid mobility upstream of the wormhole tip front is:

$\begin{matrix} {M = {M_{w} = \frac{k_{0}}{\mu_{d}\frac{\Delta \; p_{bt}}{\Delta \; p_{0}}}}} & (69) \end{matrix}$

This value of the fluid mobility can be applied in the interval [ s _(k,0), s _(k,w)] along the streamline St_(k), where s _(k,w) is the curvilinear distance traveled by the front formed by the tips of the wormholes along Stk. We propose an extension of (67) and (49) to arbitrary flow fields along a streamline:

$\begin{matrix} {{{\frac{\partial{\overset{\_}{s}}_{k,w}}{\partial t}(t)} = {\frac{1}{\phi_{0}}\frac{Q_{k,w}(t)}{{\overset{\_}{h}\left( {{\overset{\_}{s}}_{k,w}(t)} \right)}{\theta_{0}\left( {u_{k,w}(t)} \right)}}}}{{u_{k,w}(t)} = \frac{Q_{k,w}(t)}{\overset{\_}{h}\left( {{\overset{\_}{s}}_{k,w}(t)} \right)}}} & (70) \end{matrix}$

where Q_(k,w)(t) is the volumetric flow rate per unit thickness along the z-axis on streamline St_(k), at a distance s _(k,w) from its origin. Q_(k,w) may be determined by either solving (57) if the flow is that of an incompressible fluid, or (63) otherwise. h( s _(k,w)) may be determined used Equation (60).

Similarly, as various mobility fronts develop along the streamlines, other variable may be introduced to track the curvilinear distance traveled by such fronts. As described above, another zone of constant mobility has been introduced for Self-Diverting acids, propagating ahead to the wormhole tips. Equation (13) is used for predicting the mobility M_(r) in this zone; this equation is reproduced in part in Equation (72). Also, as shown above, the relative velocity at which this front propagates is shown to be the inverse of θ_(r), a quantity which can be assessed from linear core-flood experiments (see equation (2).

To solve the general flow problem of a self-diverting acid in non-axisymmetric flow about the borehole, we therefore define a new variable s _(k,r) measuring the distance traveled on St_(k) by the zone in which the fluid mobility is equal to M_(r) and, such that,

$\begin{matrix} {{\frac{\partial{\overset{\_}{s}}_{k,r}}{\partial t}(t)} = {\frac{1}{\phi_{0}}\frac{Q_{k,r}(t)}{{\overset{\_}{h}\left( {{\overset{\_}{s}}_{k,r}(t)} \right)}{\theta_{r}\left( {u_{k,r}(t)} \right)}}}} & (71) \\ {{{u_{k,r}(t)} = \frac{Q_{k,r}(t)}{\overset{\_}{h}\left( {{\overset{\_}{s}}_{k,r}(t)} \right)}}{M = {M_{r} = \frac{k_{0}}{\frac{\mu_{d}}{\;}\frac{\Delta \; p_{r}}{\Delta \; p_{0}}\frac{\theta_{0}}{\theta_{0} - \theta_{r}}}}}} & (72) \end{matrix}$

Q_(k,r)(t) is the volumetric flow rate per unit thickness along the z-axis on streamline St_(k), at a distance s _(k,r) from its origin. Q_(k,r) may be determined by either solving (57) if the flow is that of an incompressible fluid, or (63) otherwise.

In various embodiments, the method detailed above is carried out in as many mobility zones as are of interest to the user.

Steps e), f), and g)—Update Parameters and Iterate

Once the various fronts under interest have been propagated over a time step δt, the flow domain can be updated. Because the wormholes change the permeability in the zone through which they have propagated, the flow field at the next time-step may be different. Therefore, the streamlines will have moved and a new set of streamlines must be determined. In the following, we present a method for doing so:

Since the permeability generated by the wormholes is several orders of magnitude larger than the original permeability of the rock, one can consider that the pressure drops between the wellbore and the tip of the wormholes are negligible. Consequently, the contour of the zone defined the region around the wellbore through which the wormholes have propagated can be used as in Step b) to distribute the source points which will serve as streamline origins. For convenience, these source points can be taken as the point defined by the s _(k,tip). Then Step b) can be reiterated to generate the new streamlines for the next time step. This algorithm is illustrated in FIG. 18. (FIG. 18 illustrates updating of the streamlines after each time step. [181]: extent of the wormholed zone after first time step. [182]: extent of the wormholed zone after second time step.) Points [183] are the initial source points used as streamlines origins along the wellbore contour [186]. Points [184] represent the position of the wormhole tips after the first time step; these serve as source points to re-calculate the streamlines after the first time step. Points [185] represent the position of the wormhole tips after the second time step; they serve as source points to re-calculate the streamlines after the second time step, and so on. Dotted lines [188] illustrate the initial streamlines; solid lines [187] illustrate new streamlines after the first time step.

Because the ultimate goal of matrix acidizing is to alter fluid flow in a reservoir, reservoir engineering must provide the goals for a design. In addition, reservoir variables may impact the treatment performance.

In various embodiments, the overall procedure is implemented into an acid placement simulator to predict the fate of a given design in the field. The simulator includes input means for input of reservoir parameters, formation parameters, acid formulations, results of core flood experiments, and the like; a processor unit connected to the input means and programmed with software instructions that carry out the steps outlined above, including the use of the complex potential to determine streamlines used to solve for the flow in the geologic formation, and output means communicating with the for reporting the results of the simulations. The results include treatment levels and rates for a given acid formulation in a given geological formation to enhance production of oil or gas from the formation.

A global methodology used by field engineers is described in FIG. 19. The optimization in FIG. 19 makes use of the above methodology to predict a given acid treatment performance. It is possible to improve a design by

-   -   Changing operational parameters such as:         -   Pumping rate         -   Acid volume         -   Acid formulation         -   Number of acid stages     -   Understanding important parameters controlling the treatment         outcome such as:         -   Operational parameters         -   Reservoir parameters         -   Wellbore parameters         -   Conveyance parameters

In various embodiments, the concepts detailed in this document are integrated into a software that solves the flow of acid around the wellbore, into the reservoir. Below is a non-limiting example of how this software is used.

EXAMPLE

The example illustrated in FIG. 20 shows a well [200] crossing 2 producing zones of a reservoir bounded by flow barriers [205] separating the zones of flow. The top zone [201] of the reservoir has a horizontal permeability k_(h) equal to 20 mD and is about 10 meters thick. The vertical permeability k_(v) is 5 times smaller, equal to 4 mD. In this part of the reservoir, the wellbore trajectory forms an angle α varying between 0 and 20 degrees. Underneath the top zone, a non-permeable and non-producing zone [202] with a thickness of about 10 meters, is crossed by the well [200]. No flow will take place in this zone. Finally, at the bottom [203], the wellbore trajectory bends until an angle α around 78 degrees is reached. In this part of the reservoir, the horizontal permeability k_(h) is 2 mD and the vertical permeability is 3 mD. The thickness of the bottom zone is about 22 meters.

The nature of the rock in the top and bottom zones [201] and

of the reservoir is known, and core flood experiments have been performed on cores extracted from these zones to assess the required flow parameters Θ₀, Θ_(r) and Δp_(r) to model the flow of the acids of interest.

In the top zone [201], Equation (24) dictates that the flow would be mostly horizontal (in the bedding plane) and therefore a radial flow model will be applied to simulate the flow of acid, similar to Equation (68). In the bottom zone [203], the wellbore is close to horizontal and Equation (24) determines that the flow will be mostly vertical. In this zone a flow model similar to (70) is therefore applied.

The wellbore is then divided into multiple segments, and the reservoir in multiple layers in a way similar to FIG. 9. The number of segments, and therefore layers, is selected by the engineer and is large enough for him to believe that the reservoir is discretized accurately enough.

In the layers within the bottom zone of the reservoir, streamlines are computed according to the procedure described above. The interface at the top of the bottom zone due to the presence of the impermeable middle zone forms a flow barrier. Similarly, the bottom of the bottom zone is another flow barrier. Near the top of the bottom zone, the streamlines

Then, the engineer starts the simulation consisting of pumping a certain volume of acid, 15% HCl in this case, for which he knows the values of the parameter Θ₀ in the two zones [201] and [203] as mentioned above. The goal is to ensure that the wormholes formed by the acid will extent at least 5 meters away from the wellbore in order to obtain an optimum stimulation of the well. The depth of 5 meters is represented by the dashed lines around the wellbore [200] in FIG. 21, for scale reference. The original design consisted of pumping a volume of acid corresponding to 100 gallons per foot (approximately 1250 liters per meter) of wellbore length. The rate of injecting was fixed. FIG. 21 shows the evolution of the wormhole fronts in the top and bottom zone for four treatments: FIG. 21 a—25 gal/ft; FIG. 21 b—50 gal/ft; FIG. 21 c—75 gal/ft; FIG. 21 d—100 gal/ft. The top and bottom zones show various lines, each corresponding to the front formed by the tip of the wormholes at a given time. As time runs, the lines are deeper and deeper into the reservoir, showing that the wormholes extend into the reservoir. In the top zone [201], the front [211] formed by the tip of the wormholes is circular, due to radial flow. In the bottom zone [203], the contours formed by the fronts [213] of the wormhole tips are not circular due to the non radial flow obtained when flowing along the streamlines. In FIG. 21, these are shown as though there were 8 wormhole tips at each location at which the fronts are shown; series of octagons show the progression of the contours. Dotted lines [204] show where the front would be if flow were radial.

From FIG. 21, one can see that in order to reach the target depth of 5 m, in this case, 75 gal/ft (approximately 936 liters per meter) of acid is sufficient. It is therefore possible to reduce the cost of acid required to achieve the target. This is a result of the optimization loop illustrated in FIG. 19.

FIG. 22 shows streamlines [220] originating from the well bore [221] in a layer close to the top of the bottom zone [203].

FIG. 23 show streamlines [230] originating from the well bore [232] in a layer closer to the bottom of the bottom zone [203]. 

1. A method for solving the flow of acid from a wellbore segment to a corresponding reservoir layer during a matrix acidizing simulation, comprising: a) Defining the initial geometry of the domain in which the flow problem is to be solved; b) Determining the complex potential associated with the flow problem in the domain under consideration; c) Determining streamlines from the complex potential in the domain under consideration; d) Using the streamlines to solve flow over a time step δt to propagate acid within the domain and update wormhole extent; e) Updating the definition of the domain according to wormhole extent; f) Updating the time; g) Iterating as desired from step b).
 2. A method according to claim 1, comprising determining the streamlines by a finite volume method.
 3. A method according to claim 3, wherein the method includes simulation of the flow of a self-diverting acid.
 4. A method of optimizing acid treatment of a hydrocarbon containing carbonate reservoir, comprising: carrying out linear core flood experiments varying one or more parameters selected form the group consisting of acid formulation, rock type, flow rate, and temperature; deriving the following functions from the experiments, as a function of the parameters: Θ_(o)—the pore volume to wormhole/dissolution front breakthrough; and, if the acid formulation is a self-diverting acid: Θ_(r)—the pore volume to resistance zone breakthrough; and Δp_(r)—the pressure drop at resistance zone breakthrough; solving the flow of acid from a wellbore segment to a corresponding reservoir layer during a matrix acidizing simulation by a process comprising: a) defining the initial geometry of the domain in which the flow problem is to be solved; b) determining the complex potential associated with the flow problem in the domain under consideration; c) determining streamlines from the complex potential in the domain under consideration; d) using the streamlines to solve flow over a time step δt to propagate acid within the domain and update wormhole extent; using the simulator in an optimization loop together with known and/or estimated reservoir parameters; and calculating at least one of the following from the simulator optimization loop: stage and rate volumes of the acid treatment; fluid selection for the acid treatment; wormhole invasion profile; and skin profile.
 5. A method according to claim 4, wherein the acid is a self diverting acid.
 6. A method according to claim 4, comprising optimizing at least one of the pumping rate; acid volume; acid formulations; and number of acid stages.
 7. A method according to claim 5, comprising optimizing at least one of the pumping rate; acid volume; acid formulations; and number of acid stages. 